Modular network routers or switches (network devices) typically include a chassis with separate cards or modules for the provision of different functions associated with their operation. Such a modular architecture can include a control module that operates to provide overall control of the network device operation and to provide routing and/or switching protocol functionality (all generally referred to as control plane functions), one or more line cards to provide packet processing and forwarding functionality (generally referred to as data or forwarding plane functions) and one or more switching cards to switch packets between the line cards. All of these cards can be connected to a backplane that is arranged in the network device chassis. FIG. 1 generally illustrates this prior art switch architecture.
The switch/router 10 in FIG. 1 includes a control module and a plurality of line cards all connected by a switch fabric. The control module is comprised of three CPUs, CPU-A, CPU-B and CPU-C, each of which operates to perform different functionality in support of the overall system operation. In this case, CPU-A can be dedicated to certain management functions such as user interface management, system chassis management, system configuration management and management of system security to name only a few functions. CPU-B can be dedicated to running layer 3 routing protocols such as the border gateway protocol (BGP), the open shortest path first (OSPF) protocol, routing information protocol (RIP) to name just a few and CPU-C can be dedicated to running layer 2 switching protocols such as the Internet group management protocol (IGMP), address resolution protocol (ARP), spanning tree protocol (STP) and the virtual router redundancy protocol (VRRP) to name just a few. The routing protocols running in CPU-B generally send messages to and receive messages from the surrounding network devices in order to learn certain information about these devices and their relationship to the network. This information can include their IP address, distance information, link attributes, group membership information to name only a few. The switching protocols running in CPU-C generally gather information from the packets being processed by the host device, which in this case is the router 10. This information can include the MAC address and the port I.D. of another network device. The information received by the protocols running on CPU-B and CPU-C can be used to derive the shortest path from the host network device to another, neighboring network device or to calculated the distance between two network devices, to calculate a next hop address for instance or spanning trees and other information used to construct and maintain layer 2 switching tables and layer 3 routing tables. The switching table and routing table information is then made available to the line cards which use this information to update forwarding tables which it uses to process packets or frames of information arriving at the router 10.
Continuing to refer to FIG. 1, each of the line cards includes a CPU which is largely dedicated to running processes to support the construction and maintenance of layer 2 and/or a layer 3 forwarding tables stored in memory on each of the line cards. The information contained in each of the layer 2 and layer 3 forwarding tables stored in each line card is substantially the same. There are other tables stored and maintain by each of the line cards as well, and each of these tables can include different information. These tables can be an ingress L2 access control list (ACL) table, VLAN membership table, L2 QoS table, MPLS forwarding table and a next hop table to name only a few. Each of the line card CPUs also is responsible for running a MAC agent and a FIB agent. The MAC agent is primarily responsible for communicating with some of the layer 2 processes running on CPU-C of the control module to identify and receive commands or actions they need to take regarding the maintenance of the layer 2 forwarding table(s). The FIB agent is primarily responsible for communicating with some of the layer 3 processes running on CPU-B of the control module to identify and receive commands or actions they need to take regarding the maintenance of the layer 3 forwarding table(s).
Each line card is designed to support some fixed number of input/output ports (ports) that operate in the data plane to receive packets from and transmit packets to the network to which the network device is connected. Each port is typically designed to process a maximum number of packets or bytes per second. As the volume of network traffic increases, it becomes necessary to design network devices, such as routers and switches that have the capability to handle the increased volume of traffic. Generally, the solution to this problem has been to add additional resources. One solution to this problem is to design line cards that are capable of processing and forwarding the packets more rapidly. Another solution to this problem is to add more ports to each of the line cards. Typically, both of these solutions are implemented together, in which case it may be necessary to add additional components to the line card in order to support the additional ports. As there is a finite amount of space on each line card to support all of the functionality associated with it (additional memory and packet processing devices, etc), adding more resources to a line card can necessitate increasing its dimensions which is not always desirable or possible. Consequently, it is desirable to design a network device that operates to very efficiently utilize the resources provided for processing packets and frames of information and for running the various network protocols.